var QueryForm;
var QueryWindows;
var DiscountStore;
/*
 * 查询窗口
 */
var BuildQueryWindows = function() {
	QueryWindows = new Ext.Window({
				title : '~ 查询窗口 (请选择查询条件)~',
				width : 500,
				heigth : 400,
				resizable : false,
				modal : true,
				closeAction : 'hide',
				items : [QueryForm],
				buttons : [{
							iconCls : 'query',
							text : '查询',
							handler : Query
						}, {
							iconCls : 'empty',
							text : '清空',
							handler : function() {
								QueryForm.getForm().reset();
							}
						}],
				buttonAlign : 'center'
			})
}

/*
 * 建立查询表单的界面布局
 */
var BuildQueryForm = function() {
	QueryForm = new Ext.form.FormPanel({
		labelAlign : 'right',
		labelWidth : 70,
		width : '100%',
		bodyStyle : 'padding:20px 10px;',
		items : [{
			layout : 'column',
			border : false,
			items : [{
						bodyStyle : 'padding-top:5px',
						columnWidth : .5,
						layout : 'form',
						defaults : {
							width : 130
						},
						defaultType : 'textfield',
						items : [{
									fieldLabel : '资产状态',
									name : 'state',
									xtype : 'combo',
									store : new Ext.data.SimpleStore({
												fields : ['text'],
												data : [['在用'], ['报损'], ['出售']]
											}),
									emptyText : '请选择',
									mode : 'local',
									triggerAction : 'all',
									valueField : 'text',
									displayField : 'text'
								}, {
									fieldLabel : '资产类别',
									name : 'type',
									xtype : 'combo',
									store : new Ext.data.Store({
												proxy : new Ext.data.HttpProxy(
														{
															url : '/FAM/getAssetType'
														}),// 从数据库取数据 -- 未完成
												reader : new Ext.data.JsonReader(
														{
															root : 'type'
														}, ['type']), // 匹配数据库中的字段
												autoLoad : false
											}),
									emptyText : '请选择',
									mode : 'remote',
									triggerAction : 'all',
									valueField : 'type', // typt应该与数据库中的字段相同
									displayField : 'type'
								}]
					}, {
						bodyStyle : 'padding-top:5px',
						columnWidth : .5,
						style : 'margin-left: 15px;',
						layout : 'form',
						defaults : {
							width : 130
						},
						defaultType : 'textfield',
						items : [{
							fieldLabel : '使用部门',
							name : 'department',
							xtype : 'combo',
							store : new Ext.data.Store({
										proxy : new Ext.data.HttpProxy({
													url : '/FAM/DictInfoServlet'
												}),// 从数据库取数据 -- 未完成
										reader : new Ext.data.JsonReader({
													root : 'department'
												}, ['name']), // 匹配数据库中的字段
										autoLoad : false
									}),
							emptyText : '请选择',
							mode : 'remote',
							triggerAction : 'all',
							valueField : 'name', // text应该与数据库中的字段相同，暂时用text替代
							displayField : 'name'
						}, {
							fieldLabel : '设备名称',
							name : 'name'
						}]
					}]
		}]
	})
}

/*
 * 通过查询条件连接数据库得到数据 --- 未完成
 * 
 */
var Query = function() {

	DiscountStore.baseParams['start'] = '0';
	DiscountStore.baseParams['limit'] = '15';
	DiscountStore.baseParams['state'] = QueryForm.form.findField('state')
			.getValue();
	DiscountStore.baseParams['type'] = QueryForm.form.findField('type')
			.getValue();
	DiscountStore.baseParams['name'] = QueryForm.form.findField('name')
			.getValue();
	DiscountStore.baseParams['department'] = QueryForm.form
			.findField('department').getValue();

	QueryWindows.hide();
	DiscountStore.reload();
}

var BulidLayout = function() {
	/*
	 * 存放资产信息的GridPanel布局 资产类别、资产编号、使用部门、使用状态、设备名称、
	 * 原始价值、使用年限、折旧率、残值、本次折旧值、折旧时间，对于原始价值、残值、本次折旧值均有求和总计
	 */
	var DiscountColumnModel = new Ext.grid.ColumnModel([
			new Ext.grid.RowNumberer(), {
				header : '资产编号',
				width : 150,
				sortable : true,
				dataIndex : 'assetNo'
			}, {
				header : '设备名称',
				sortable : true,
				dataIndex : 'name'
			}, {
				header : '资产类型',
				sortable : true,
				dataIndex : 'type'
			}, {
				header : '使用部门',
				sortable : true,
				dataIndex : 'department'
			}, {
				header : '资产状态',
				sortable : true,
				dataIndex : 'state'
			}, {
				header : '原始价值(RMB)',
				sortable : true,
				dataIndex : 'money'
			}, {
				header : '本次折旧值',
				sortable : true,
				dataIndex : 'depreciationValue'
			}, {
				header : '折旧时间(年)',
				sortable : true,
				dataIndex : 'depreciationTime'
			}, {
				header : '使用年限(年)',
				sortable : true,
				dataIndex : 'usedYears'
			}, {
				header : '折旧率',
				sortable : true,
				dataIndex : 'depreciation'
			}, {
				header : '残值(RMB)',
				sortable : true,
				dataIndex : 'residual'
			}])

	var DiscountRecord = new Ext.data.Record.create([{
				name : 'assetNo'
			}, {
				name : 'belongTo'
			}, {
				name : 'model'
			}, {
				name : 'produceDate',
				type : 'date',
				dateFormat : 'Y-m-d H:i:s'
			}, {
				name : 'equipNumber'
			}, {
				name : 'name'
			}, {
				name : 'type'
			}, {
				name : 'measure'
			}, {
				name : 'supplyUnit'
			}, {
				name : 'money'
			}, {
				name : 'buildCharge'
			}, {
				name : 'produceUnit'
			}, {
				name : 'department'
			}, {
				name : 'principal'
			}, {
				name : 'startUseTime',
				type : 'date',
				dateFormat : 'Y-m-d H:i:s'
			}, {
				name : 'lifeYears'
			}, {
				name : 'usedYears'
			}, {
				name : 'appertainEquipment'
			}, {
				name : 'depreciation'
			}, {
				name : 'state'
			}, {
				name : 'remark'
			}, {
				name : 'depreciationValue'
			}, {
				name : 'depreciationTime'
			}, {
				name : 'residual'
			}])

	DiscountStore = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '/FAM/getDiscountServlet'
						}),
				reader : new Ext.data.JsonReader({
							root : 'result',
							totalProperty : 'total'
						}, DiscountRecord)
			})

	var DiscountGrid = new Ext.grid.GridPanel({
				width : '100%',
				height : 500,
				store : DiscountStore,
				cm : DiscountColumnModel,
				stripeRows : true,
				loadMask : true,
				viewConfig : {
					forceFit : true
				},
				plugins : new Ext.ux.PanelResizer({
							minHeight : 100
						}),
				tbar : ['查询的折扣明细信息(提示：~^0^~ 双击表格中的某行可以查看该行的详情 ~^0^~)', '->', {
							iconCls : 'query',
							text : ' 查  询',
							width : 100,
							style : 'margin-right:20px;',
							handler : function() {
								QueryWindows.show();
							}
						}],
				bbar : new Ext.PagingToolbar({
							pageSize : 15,
							store : DiscountStore,
							displayInfo : true,
							plugins : new Ext.ux.ProgressBarPager()
						})
			})

	DiscountGrid.addListener('rowdblclick', function(DiscountGrid, rowIndex,
			event) // 监听GridPanel中某行双击查看详细信息事件
			{
				var record = DiscountGrid.getStore().getAt(rowIndex);
				DetailDiscountWindow.show();
				DetailDiscountForm.getForm().loadRecord(record);
			})

	/*
	 * 显示资产详细信息的FormPanel -- DetailDiscountWindows的子元素
	 */

	var DetailDiscountForm = new Ext.form.FormPanel({
				frame : true,
				labelAlign : 'right',
				labelWidht : 60,
				items : [{
							layout : 'column',
							items : [{
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产基本信息',
										autoHeight : true,
										defaults : {
											disabled : true,
											width : 150
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '资产编号',
													name : 'assetNo'
												}, {
													fieldLabel : '设备序列号',
													name : 'equipNumber'
												}, {
													fieldLabel : '设备型号',
													name : 'model'
												}, {
													fieldLabel : '设备名称',
													name : 'name'
												}, {
													fieldLabel : '资产类别',
													name : 'type'
												}, {
													fieldLabel : '使用部门',
													name : 'department'
												}, {
													fieldLabel : '资产状态',
													name : 'state'
												}, {
													fieldLabel : '权属关系',
													name : 'belongTo'
												}, {
													fieldLabel : '计量单位',
													name : 'measure'
												}, {
													fieldLabel : '使用负责人',
													name : 'principal'
												}]
									}, {
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产数据信息',
										defaults : {
											disabled : true,
											width : 150
										},
										autoHeight : true,
										style : 'margin-left: 30px;',
										defaultType : 'textfield',
										items : [{
													fieldLabel : '原始价值',
													name : 'money'
												}, {
													fieldLabel : '安装费用(RMB)',
													name : 'buildCharge',
													xtype : 'numberfield'
												}, {
													fieldLabel : '残值',
													name : 'residual'
												}, {
													fieldLabel : '本次折旧值',
													name : 'depreciationValue'
												}, {
													fieldLabel : '折旧时间(年)',
													name : 'depreciationTime'
												}, {
													fieldLabel : '折  旧  率',
													name : 'depreciation',
													xtype : 'numberfield'
												}, {
													fieldLabel : '生产日期',
													name : 'produceDate',
													xtype : 'datefield',
													format : 'Y-m-d'
												}, {
													fieldLabel : '启用时间',
													name : 'startUseTime',
													xtype : 'datefield',
													format : 'Y-m-d'
												}, {
													fieldLabel : '已经使用年限',
													name : 'usedYears',
													xtype : 'numberfield'
												}, {
													fieldLabel : '规定使用年限',
													name : 'lifeYears',
													xtype : 'numberfield'
												}]
									}]
						}]
			})

	/*
	 * windows -- 双击表格中某行时弹出资产详细信息的窗口
	 */
	var DetailDiscountWindow = new Ext.Window({
				title : '资产详细信息(查看模式)',
				width : 650,
				height : 372,
				resizable : false,
				modal : true,
				closeAction : 'hide',
				items : [DetailDiscountForm],
				buttons : [{
							iconCls : 'back',
							text : '返回',
							handler : function() {
								DetailDiscountWindow.hide();
							}
						}]
			})

	/*
	 * 用Viewport布局查看资产信息的界面,分北部和中央分区 北部放查询的formPanel面板 中央放资产信息的GridPanel面板
	 */
	new Ext.Viewport({
				rendTo : Ext.getBody(),
				layout : 'border',
				items : [{
							region : 'center',
							layout : 'fit',
							items : [DiscountGrid]
						}]
			})
}

var init = function() {
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';
	BuildQueryForm();
	BuildQueryWindows();
	BulidLayout();
	QueryWindows.show();
}

Ext.onReady(init)